For some years now, basically since the cloud computing model has become consolidated, the concept of “virtualization” has been standing out within the world of computers.
Virtualization can basically be defined as the creation by means of software of a virtual version of a technological resource, such as a hardware platform, an operating system, a data storage device or other network resources, such that this resource can be divided into one or more execution environments. It is important to point out that the case in which this software is assisted by virtualization hardware technology, such as Intel-VT or AMD-V, is also possible (see Wikipedia in Spanish—http://es.wikipedia.org/wiki/Virtualizacion—for example).
One of the technological resources that is most frequently virtualized is a computer system (for example, a personal computer or a server), which allows this computer system to concurrently execute multiple instances of different operating systems. In this manner, the computer system is capable of executing different applications requiring different operating systems.
One type of virtualization is also known to allow emulating computer system hardware resources. To that end, it is necessary to install virtualization software in the computer system the objective of which is to make computer system hardware resources accessible for all installed operating systems. Another objective of this virtualization software is to coordinate access to virtualized hardware resources for the different operating systems installed in the computer system.
Despite the fact that the virtualization of hardware resources of a computer system (though applicable to any other type of virtualization) has some advantages (for example, as discussed above, it allows concurrently executing several operating systems on one and the same computer system), it also has a significant number of drawbacks.
Thus, for example, such virtualization can entail a decrease in computer system performance as a result of the overload entailed in executing the virtualization software on the computer system. Among others, the execution of the applications, which can run slower than in systems that are not virtual, can be affected.
In relation to the preceding drawback, in many cases such virtualization can virtualize resources which in no case are going to be used or in no case need to be virtualized. Thus, for example, if the keyboard of a computer system is to be virtualized so that each application being executed has a virtual keyboard, according to the state of the art it would be necessary to create as many virtual computer systems (virtual machine plus operating system) as virtual keyboards are required by the different applications being executed. This entails unnecessary system resource consumption that, as described above, affects system performance.